package com.ctsi.manager;

import com.ctsi.common.ResultVO;
import com.ctsi.entity.SysMenuOrg;
import com.ctsi.entity.req.AddSysUserMenuOrgReq;
import com.ctsi.mapper.SysMenuOrgMapper;
import com.ctsi.ssdc.admin.domain.CscpUser;
import com.ctsi.ssdc.security.SecurityUtils;
import com.ctsi.utils.MenuUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;

@Slf4j
@Component
public class SysMenuOrgManager {

    @Resource
    private SysMenuOrgMapper sysMenuOrgMapper;

    public List<SysMenuOrg> selectSysMenuByOrgId(Long id) {
        log.info("SysMenuOrgManager.selectSysMenuByOrgId id = {}", id);
        List<SysMenuOrg> sysMenuOrgs = sysMenuOrgMapper.selectSysMenuByOrgId(id);
        //组装菜单
        List<SysMenuOrg> collect = sysMenuOrgs.stream().filter(sysMenuOrg -> {
            return sysMenuOrg.getParentOrgId() == 0;
        }).map(sysMenuOrg -> {
            sysMenuOrg.setSysMenuOrgs(MenuUtils.getsysmenuorg(sysMenuOrg,sysMenuOrgs));
            return sysMenuOrg;
        }).collect(Collectors.toList());
        return collect;
    }


    public Integer insertSysMenuOrg(AddSysUserMenuOrgReq req) {
        SysMenuOrg sysMenuOrg = new SysMenuOrg();
        BeanUtils.copyProperties(req, sysMenuOrg);
        log.info("SysMenuOrgManager.insertSysMenuOrg sysMenuOrg = {}", sysMenuOrg);
        return sysMenuOrgMapper.insertSysMenuOrg(sysMenuOrg);
    }

    public Integer updateSysMenuOrgByOrgId(SysMenuOrg sysMenuOrg) {
        log.info("SysMenuOrgManager.updateSysMenuOrgByOrgId sysMenuOrg = {}", sysMenuOrg);
        return sysMenuOrgMapper.updateSysMenuOrgByOrgId(sysMenuOrg);
    }

    public Integer deleteSysMenuByOrgId(Long id) {
        log.info("SysMenuOrgManager.deleteSysMenuByOrgId id = {}", id);
        return sysMenuOrgMapper.deleteSysMenuByOrgId(id);
    }

    public List<SysMenuOrg> list(SysMenuOrg sysMenuOrg){
        log.info("SysMenuOrgManager.list id = {}", sysMenuOrg);
        List<SysMenuOrg> list = sysMenuOrgMapper.list(sysMenuOrg);
        //组装菜单
        List<SysMenuOrg> collect = list.stream().filter(sysMenuOrgs -> {
            return sysMenuOrgs.getParentOrgId() == 0;
        }).map(sysMenuOrgs -> {
            sysMenuOrgs.setSysMenuOrgs(MenuUtils.getsysmenuorg(sysMenuOrgs,list));
            return sysMenuOrgs;
        }).collect(Collectors.toList());

        return collect;
    }

<<<<<<< HEAD
    public ResultVO<List<CscpUser>> selectUserList(Long id) {
        List<CscpUser> collect = sysMenuOrgMapper.selectUserList(id).stream().filter(cscpUser -> {
            return cscpUser.getId() != SecurityUtils.getCurrentUserId();
        }).collect(Collectors.toList());
        return ResultVO.success(collect);
    }

    public ResultVO<List<SysMenuOrg>> selectOrgList(long id){
        List<SysMenuOrg> sysMenuOrgs = sysMenuOrgMapper.selectOrgList(id);
        return ResultVO.success(sysMenuOrgs);
    }
=======
    public SysMenuOrg criteriaQuerySysMenu(AddSysUserMenuOrgReq req) {
        SysMenuOrg sysMenuOrg = new SysMenuOrg();
        BeanUtils.copyProperties(req, sysMenuOrg);
        log.info("SysMenuOrgManager.criteriaQuerySysMenu sysMenuOrg = {}", sysMenuOrg);
        return sysMenuOrgMapper.criteriaQuerySysMenu(sysMenuOrg);
    }

>>>>>>> 68aa1d90d2566d16418fa4b72fc5cda36fdfbb57
}
